캐싱과 쿠키

11/8/2024

캐싱(Caching)

캐싱은 자주 사용하는 데이터를 임시 저장소에 저장하여, 동일한 데이터에 대한 요청이 있을 때 서버에 다시 요청하지 않고 빠르게 접근할 수 있도록 하는 기술이다. 캐시는 웹 페이지의 성능을 크게 향상시키고, 네트워크 트래픽을 줄이며, 서버 부하를 줄이는 데 중요한 역할을 한다.

캐싱의 주요 특징

  • 속도 향상: 캐시된 데이터를 사용하면 서버에 다시 요청할 필요가 없으므로 응답 속도가 빨라진다.
  • 네트워크 트래픽 감소: 동일한 리소스를 반복적으로 다운로드 하지 않기 때문에 네트워크 트래픽이 줄어든다.
  • 서버 부하 감소: 서버로의 요청이 줄어들어 서버 자원을 절약할 수 있다.

캐시의 종류

  1. 브라우저 캐시: 브라우저가 웹 페이지의 리소스(HTML, CSS, 이미지 등)를 로컬에 저장하여, 사용자가 같은 페이지를 다시 방문할 때 빠르게 로드할 수 있도록 한다.
  2. 프록시 캐시: 프록시 서버가 중간에서 캐싱하여 여러 사용자가 동일한 리소스를 요청할 때 서버 대신 제공할 수 있다.
  3. CDN 캐시: 콘텐츠 전송 네트워크(CDN)가 전 세계 여러 위치에 캐시된 데이터를 저장하여, 사용자에게 더 가까운 서버에서 빠르게 데이터를 제공할 수 있다.

캐싱의 동작 방식

  • HTTP 헤더 기반 캐싱: 웹 서버는 HTTP 응답 헤더를 통해 브라우저가 리소스를 얼마나 오래 캐시해야 하는지 정의한다.예를 들어,
    • Cache-Control : 캐싱 정책(예: max-age, no-cache)을 설정하는데 사용된다.
    • ETag : 리소스의 고유 식별자를 사용하여 클라이언트가 가진 캐시가 최신 버전인지 확인하는 데 사용된다.
    • Expires : 리소스가 만료되는 시점을 지정하는 헤더이다.
  • 만료된 캐시 갱신: 리소스가 만료되면 브라우저는 서버에 다시 요청하여 최신 버전의 데이터를 받아온다.

캐싱의 장단점

캐싱 장점

  • 성능 향상: 자주 요청되는 데이터를 캐시에 저장함으로써 응답 시간을 단축하고 서버 부하를 줄일 수 있다.
  • 네트워크 비용 절감: 동일한 데이터를 반복적으로 다운로드하지 않으므로 네트워크 트래픽이 감소한다.
  • 사용자 경험 개선: 빠른 페이지 로딩 속도로 인해 사용자 경험이 향상된다.

캐싱 단점

  • 데이터 최신성 문제: 캐시는 일정 시간 동안 데이터를 유지하기 때문에, 원본 데이터가 변경되었더라도 캐시된 오래된 데이터를 제공할 수 있다. 이를 해결하기 위해 적절한 캐시 만료 정책(TTL)을 설정해야 한다.
  • 캐시 무효화: 원본 데이터가 변경되었을 때, 캐시에 저장된 데이터를 무효화하는 과정에서 문제가 발생할 수 있다. 이를 적절히 관리하지 않으면 오래된 데이터가 사용자에게 제공될 수 있다.

쿠키(Cookies)

쿠키는 클라이언트(사용자)의 브라우저에 작은 데이터를 저장하는 방법이다. 쿠키는 주로 사용자의 세션 상태를 유지하거나, 사용자 정보를 기억하는데 사용된다.

쿠키의 주요 특징

  • 작은 데이터 저장소: 쿠키는 일반적으로 4KB 이하의 작은 데이터를 저장하는 데 사용된다.
  • 서버와 클라이언트 간 데이터 교환: 쿠키는 클라이언트와 서버 간에 주고 받으며, 주로 세션 정보나 사용자 인증 상태를 유지하는 데 사용된다.
  • 만료 시간 설정 가능: 쿠키는 만료 시간을 설정할 수 있으며, 만료 시간이 지나면 자동으로 삭제된다.

쿠키의 동작 방식

  1. 쿠키 생성: 서버는 HTTP 응답 시 Set-Cookie 헤더를 통해 클라이언트에게 쿠키를 생성하도록 지시한다.
  2. 쿠키 전송: 이후 클라이언트는 해당 도메인으로 요청을 보낼 때마다 쿠키를 함께 전송한다.
  3. 쿠키 만료 및 삭제: 쿠키에는 만료 시간이 설정될 수 있으며, 만료 시간이 지나면 브라우저에서 자동으로 삭제된다.

쿠키의 사용 사례

  • 세션 관리: 사용자 로그인 상태 유지
  • 사용자 맞춤 설정 저장: 예를 들어, 다크 모드 설정이나 언어 선택 등을 기억
  • 추적 및 분석: 광고 추적이나 웹사이트 방문 기록 분석

쿠키의 종류

  1. 세션 쿠기(Session Cookie): 브라우저 세션 동안만 유지되며, 브라우저가 닫히면 자동으로 삭제된다.
  2. 영구 쿠키(Persistent Cookie): 만료 시간이 설정되어 있으며, 그 시간까지 브라우저에 남아 있다. 예를 들어, 로그인 상태 유지 기능은 영구 쿠키를 통해 구현된다.

쿠키의 장단점

쿠키 장점

  • 상태 유지: HTTP는 비상태성(stateless) 프로토콜이므로, 쿠키를 사용하여 사용자의 상태(로그인 여부 등)를 유지할 수 있다.
  • 개인화된 경험 제공: 사용자 맞춤형 광고나 웹사이트 설정 등을 기억하여 개인화된 경험을 제공한다.

쿠키 단점

  • 보안 취약성: 쿠키는 클라이언트 측에서 쉽게 접근할 수 있기 때문에 민감한 정보를 저장하는 데 적합하지 않다. 이를 보완하기 위해 'HttpOnly' 속성을 사용하여 자바스크립트로 접근하지 못하게 하거나, 'Secure' 속성을 통해 HTTPS 연결에서만 전송되도록 할 수 있다.
  • 크로스 사이트 공격 위험: 쿠키는 크로스 사이트 스크립팅(XSS)이나 크로스 사이트 요청 위조(CSRF) 공격에 노출될 수 있다. 이를 방지하기 위해 'SameSite' 속성을 활용하여 크로스 오리진 요청 시 쿠키 전송을 제한할 수 있다.

차이점

특성

캐싱(Caching)

쿠키(Cookies)

목적

리소스 재사용 및 성능 향상

세션 상태 유지 및 사용자 정보 저장

데이터 저장 위치

브라우저 또는 프록시 서버

클라이언트(브라우저)

데이터 크기

일반적으로 대용량 리소스(HTML, CSS, 이미지 등)

작은 데이터 (일반적으로 4KB 이하)

유효 기간

HTTP 헤더로 설정('Cache-Contorl', 'Expires')

만료 시간 설정 가능 ('Set-Cookie' 헤더)

보안 이슈

오래된 데이터 제공 가능성

XSS나 CSRF 공격 시 민감한 정보 노출 위험

따라서

캐싱과 쿠키 모두 웹 애플리케이션에서 중요한 역할을 하지만 그 목적과 사용 방식은 다르다.

  • 캐싱은 성능 최적화와 네트워크 비용 절감을 위한 기술로, 자주 사용하는 리소스는 임시로 저장해 빠르게 접근할 수 있게 한다.
  • 반면, 쿠키는 세션 관리와 사용자 맞춤형 경험 제공을 위한 기술로, 작은 데이터를 클라이언트 측에 저장해 로그인 상태나 사용자 선호도를 기억하게 한다.

블로그 내 관련 문서


참고 자료

출처 :

댓글을 불러오는 중...